In [1]:
import pandas as pd
import glob
pd.options.plotting.backend = "plotly"
import plotly
plotly.offline.init_notebook_mode()
dfs = []
for filepath in glob.glob("CAES/*.json"):
    dfs.append(pd.read_json(filepath))
    
df = pd.concat(dfs, ignore_index=True)
df.columns = ['estudiante', 'tarea', 'tipologia', 'tema', 'edad', 'sexo', 'pais', 'l1', 'estudios', 'edad_inicio', 'meses_estudio', 'contactos_habla_es', 'nivel', 'oraciones']
In [2]:
df.head()
Out[2]:
estudiante tarea tipologia tema edad sexo pais l1 estudios edad_inicio meses_estudio contactos_habla_es nivel oraciones
0 417.0 1156.0 Carta Carta amigo 26.0 Mujer Brasil PortuguƩs Universidad 25.0 8.0 Amigos B1 [Hola Carlos !, Hace mucho que no te veo hombr...
1 1387.0 3934.0 Carta Carta amigo 20.0 Mujer Marruecos Ɓrabe Universidad 15.0 30.0 No A2 [Hola querida Sara ,, espero que estes muy bie...
2 2273.0 6370.0 Postal Postal vacaciones 18.0 Mujer Bielorrusia Ruso Universidad 18.0 8.0 No A1 [Como estais ?, !, Hola amigos ! ?, Espero que...
3 1522.0 4307.0 Postal Postal vacaciones 22.0 Hombre China Chino mandarƭn Universidad 21.0 2.0 No A2 [Cuando lleguƩ a el destino , le propuso que s...
4 775.0 2159.0 Correo electrónico Familia 27.0 Mujer Francia Francés Otros 20.0 6.0 Amigos A1 [¿ Que tal ?, un beso, Espero que todo va bien...
In [3]:
df.nivel.value_counts().plot.barh(title="Distribución de Documentos por Nivel", width=900, height=500)
In [4]:
conteo_paises = df.pais.value_counts()
df.loc[df.pais.isin(list(conteo_paises.index[conteo_paises < 50])), "pais"] = "Otro"
df.pais.value_counts().plot.bar(title="Distribución de País de Origen (Paises con menos de 50 obs agrupados en 'Otro')", width=900, height=500)
In [5]:
df.tipologia.value_counts().plot.barh(title="Distribución de Tipología", width=900, height=500)
In [6]:
pd.crosstab(df.nivel, df.tipologia).plot(kind="bar", title="Distribución de Documentos por Nivel y Tipología", width=900, height=500)
In [7]:
df['oraciones_longitud'] = df.oraciones.map(len)
print("Cantidad de oraciones por nivel")
df.groupby('nivel').oraciones_longitud.sum().reset_index()
Cantidad de oraciones por nivel
Out[7]:
nivel oraciones_longitud
0 A1 27000
1 A2 30202
2 B1 25142
3 B2 13646
4 C1 12779
In [8]:
df.groupby('nivel').oraciones_longitud.sum().plot(kind='barh', width=900, height=500, title="NĆŗmero de *oraciones* por Nivel")
In [9]:
df.edad.plot(kind='hist', width=900, height=500, nbins=15, title="Distribución de Edad")